<?php

namespace Modules\AuthAdmin\Models;
use Illuminate\Database\Eloquent\Model as EloquentModel;
use Illuminate\Support\Facades\DB;
use App\Exceptions\ApiException;
use Modules\AuthAdmin\Services\CommonService;
class BaseApiModel extends EloquentModel 
{
	 /**
     * 指示是否自动维护时间戳
     *created_at 和 updated_at
     * @var bool
     */
	public $timestamps = false;
	
    protected $guarded = [];
	/**
	 * @name  api成功返回
	 * @param data 	返回信息
	 * @return 返回json数据
	 */
	 public function api_success($data=[]){
		 if(!isset($data['code'])){
			 $data['code'] = 8888;
		 }
		 if(!isset($data['msg'])){
			 $data['msg'] = '成功!';
		 }
		 return response()->json($data,200);
	 }
	 /**
	 * @name  api失败返回
	 * @param data 	返回信息
	 * @return 返回json数据
	 */
	public function api_error($data=[]){
		 if(!isset($data['code'])){
			 $data['code'] = 4444; 
		 }
		 if(!isset($data['msg'])){
			 $data['msg'] = '失败！';
		 }
		 throw new ApiException($data);
	}
	/**
	 * @name  添加公共方法
	 * @param data array 添加数据
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_create($data,$success_msg = '添加成功！',$error_msg = '添加失败！'){
		$data['created_at'] = date('Y-m-d H:i:s');
		if ($this->insert($data)){
			return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	} 
	/**
	 * @name  编辑公共方法
	 * @param id int 编辑id
	 * @param data array 编辑数据
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_update($id,$data,$success_msg = '编辑成功！',$error_msg = '编辑失败！'){
		$data['updated_at'] = date('Y-m-d H:i:s');
		if ($this->where('id',$id)->update($data)){
			return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	} 
	/**
	 * @name  调整状态公共方法
	 * @param id int 调整id
	 * @param data array 调整数据
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_status_update($id,$data,$success_msg = '调整成功！',$error_msg = '调整失败！'){
		if ($this->where('id',$id)->update($data)){
			return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	} 
	/**
	 * @name  编辑可为false
	 * @param id int 调整id
	 * @param data array 调整数据
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_false_update($id,$data,$success_msg = '调整成功！',$error_msg = '调整失败！'){
		if ($this->where('id',$id)->update($data) !== false){
			return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	}
	/**
	 * @name  排序公共方法
	 * @param id int 调整id
	 * @param data array 调整数据
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_sort_update($id,$data,$success_msg = '排序成功！',$error_msg = '排序失败！'){
		if ($this->where('id',$id)->update($data) !== false){
			return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	} 
	/**
	 * @name  真删除公共方法
	 * @param ids array或int  删除id
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_destroy($ids,$success_msg = '删除成功！',$error_msg = '删除失败！'){
        if ($this->destroy($ids)){
            return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	}
	/**
	 * @name  假删除公共方法
	 * @param ids array或int  删除id
	 * @param success_msg string 成功返回数据
	 * @param error_msg string 失败返回数据
	 * @return 返回json数据
	 */
	public function common_is_delete($id,$success_msg = '删除成功！',$error_msg = '删除失败！'){
        if ($this->where(['id'=>$id])->update(['is_delete'=>1])){
            return $this->api_success(['msg'=>$success_msg]);
        }else{
			return $this->api_error(['msg'=>$error_msg]);
		}
	}
	/**
	 * @name  图片格式化
	 * @param array 数据
	 * @return 返回array数据
	 */
	public function common_image_one($data){
		$CommonService = new CommonService();
		$http = $CommonService->get_http_type();
		foreach($data as $k=>$v){
			if(isset($v['image_one']) && $v['image_one']){
				if($v['image_one']['open'] == 1){
					$data[$k]['image_url'] = $http . $v['image_one']['url'];
				}else{
					$data[$k]['image_url'] = $v['image_one']['url'];
				}
			}	
		}
		return $data;
	}
	
}
